DirectX 11 移植常见问题

您所在的位置:网站首页 directx11 enhanced DirectX 11 移植常见问题

DirectX 11 移植常见问题

2024-05-17 08:54| 来源: 网络整理| 查看: 265

移植游戏是否涉及对 API 方法进行的一系列搜索替换操作,或者是否需要规划更周全的移植过程?

Direct3D 11 是对 Direct3D 9 的重大升级。 其中包含了多种范式转变,包括为虚拟化图形适配器及其上下文以及设备资源多态性的新层提供单独的 API。 你的游戏仍然可以采用本质上相同的方式使用图形硬件,但是你需要了解这个新的 Direct3D 11 API 体系结构,并且需要更新你的图形代码的每个部分以使用正确的 API 组件。 请参阅移植概念和注意事项。

新的设备上下文的作用是什么? 我应该将我的 Direct3D 9 设备替换为 Direct3D 11 设备、设备上下文,还是替换为这两者?

现在,Direct3D 设备用于在视频内存中创建资源,而设备上下文用于设置管道状态以及生成呈现命令。 有关详细信息,请参阅 Direct3D 9 之后的版本中最重要的更改是什么?

必须针对 UWP 更新游戏计时器吗?

QueryPerformanceCounter 以及 QueryPerformanceFrequency 仍然是为 UWP 应用实现游戏计时器的最佳方法。

你应该注意计时器和 UWP 应用生命周期的细微差别。 暂停/恢复与玩家重新启动桌面游戏有所不同,因为你的游戏将 从该游戏的上次播放时间点及时恢复一个快照。 如果经过了很长时间(例如,几周),那么某些游戏计时器实现可能无法正常工作。 当游戏恢复时,你可以使用应用生命周期事件来重置你的计时器。

仍然使用 RDTSC 指令的游戏需要进行升级。 请参阅游戏计时和多核处理器。

我的游戏代码基于 D3DX 和 DXUT。 是否有可以帮助我迁移代码的内容?

DirectX 工具包 (DirectXTK) 社区项目提供用于 Direct3D 11 的帮助程序类。

如何保留桌面和 Microsoft Store 的代码路径?

Chuck Walbourn 编写的标题为游戏编码技术的双重用途的文章系列提供有关在桌面和 Microsoft Store 代码路径之间共享代码的指南。

如何在 DirectX UWP应用中加载图像资源?

有两个可用于加载图像的 API 路径:

内容管道将图像转换为用作 Direct3D 纹理资源的 DDS 文件。 请参阅在游戏或应用中使用 3D 资源。 Windows 图像处理组件可用于加载各种格式的图像,并且可用于 Direct2D 位图以及 Direct3D 纹理资源。

还可以使用 DirectXTK 或 DirectXTex 中的 DDSTextureLoader 和 WICTextureLoader。

DirectX SDK 在哪里?

DirectX SDK 作为 Windows SDK 的一部分包含在内。 与 Windows SDK 分离的最新的 DirectX SDK 已于 2010 年 6 月发布。 Direct3D 示例以及其余的 Windows 应用示例都位于“代码库”中。

DirectX 可再分发内容如何?

Windows SDK 中的大多数组件都已经包含在支持的操作系统版本中,或者没有 DLL 组件(如 DirectXMath)。 你的游戏现在可以使用 UWP 应用可以使用的所有 Direct3D API 组件,所以无需重新分发它们。

Win32 桌面应用程序仍然使用 DirectSetup,因此如果你还要升级游戏的桌面版本, 请参阅适用于游戏开发人员的 Direct3D 11 部署。

离开“效果”之前,有什么方法可以将我的桌面代码更新到 DirectX 11?

请参阅 Direct3D 11 更新的效果。 Effects 11 有助于消除对传统 DirectX SDK 标头的依赖性,它的用途是帮助移植,并且只能用于桌面应用。

是否存在将 DirectX 8 游戏移植到 UWP 的路径?

Yes:

请阅读转换到 Direct3D 9。 确保游戏没有固定管道残存 - 请参阅已弃用的功能。 然后,获取 DirectX 9 移植路径:从 D3D 9 移植到 UWP。 是否可以将 DirectX 10 或 DirectX 11 游戏移植到 UWP?

DirectX 10.x 和 DirectX 11 桌面游戏可轻松移植到 UWP。 请参阅 迁移到 Direct3D 11。

如何在多监视器系统中选择正确的显示设备?

用户可以选择用于显示应用的监视器。 通过调用 D3D11CreateDevice(将第一个参数设置为 nullptr)让 Windows 提供正确的适配器。 然后,获取该设备的 IDXGIDevice interface,调用 GetAdapter 并使用 DXGI 适配器来创建交换链。

如何打开抗锯齿?

创建 Direct3D 设备时会启用抗锯齿(多重采样)。 通过调用 CheckMultisampleQualityLevels 来枚举多重采样支持,然后在调用 CreateSurface 时在 DXGI_SAMPLE_DESC structure 中设置多重采样选项。

我的游戏使用多线程和/或延迟呈现来进行呈现。 对于 Direct3D 11,我需要了解哪些内容?

请访问 Direct3D 11 中的多线程简介来开始操作。 有关主要差别的列表,请参阅 Direct3D 版本之间的线程差别。 请注意,延迟呈现使用设备的延迟上下文而不是即时上下文。

我在哪里可以了解有关 Direct3D 9 之后的可编程管道的详细信息?

请访问以下主题:

HLSL 编程指南 Direct3D 10 常见问题 我应该对我的模型使用哪种文件格式来替代 .x 文件格式?

尽管我们还没有正式替换 .x 文件格式,但是很多示例都采用了 SDKMesh 格式。 Visual Studio 还有一个内容管道,该管道将多种流行的格式编译成可以使用 Visual Studio 3D 初学者工具包中的代码加载或可以使用 DirectXTK 加载的 CMO 文件。

如何调试着色器?

Microsoft Visual Studio 包含针对 DirectX 图形的诊断工具。 请参阅调试 DirectX 图形。

x 函数的 Direct3D 11 等同项是什么?

请参阅“将 DirectX 9 功能映射到 DirectX 11 API”中提供的函数映射。

y 图面格式的 DXGI\_FORMAT 等同项是什么?

请参阅“将 DirectX 9 功能映射到 DirectX 11 API”中提供的图面格式映射。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3